The communications industry is rapidly changing to adjust to emerging technologies and ever increasing customer demand. This customer demand for new applications and increased performance of existing applications is driving communications network and system providers to employ networks and systems having greater speed and capacity (e.g., greater bandwidth). In trying to achieve these goals, a common approach taken by many communications providers is to use packet switching technology. Increasingly, public and private communications networks are being built and expanded using various packet technologies, such as Internet Protocol (IP).
Multicast communication is often used to communicate information from a single source to a group of destinations (e.g., one or more nodes). In many applications, unreliable multicast messaging is used, and receivers compensate for, or ignore lost messages.
However, in certain applications, information distributed to a group of destinations must be guaranteed to be received by each receiver, and thus some form of reliable communication must be used. For example, a connection could be established between the sender and each receiver, with messages communicated using a reliable transport protocol. However, this technique requires a large amount of resources for generating and send a message to each node, and for the sender of the original message to process each acknowledgment message.
A know system reduces the number of original messages sent by a sending node by a sending multicast message (instead of multiple unicast messages) to a group of receiving nodes, with each receiving node sending an acknowledgement message back to the sender. This reduces the number of messages sent by a sender, but still requires each message to be acknowledged, and the sender must process all the acknowledgment messages. Another system reduces the number of acknowledgment messages received and processed by the sender by inducing a hierarchy of acknowledging nodes, wherein a subset of the multiple receiving nodes acknowledge each particular message to one or multiple intermediate nodes, which in turn send a single acknowledgement message representing itself and the associated other multiple receiving nodes to the sender.
Desired are other forms of reliably communicating to a group of nodes.